package com.seven.annotation;

import com.seven.commons.StringPool;

import java.lang.annotation.*;

/**
 * @工程名:common-utils
 * @author: sevenDay
 * @时间: 2019/4/4 14:04
 * @描述:
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE,ElementType.METHOD})
@Documented
public @interface SevenCache {

    /**
     * 设置的key
     * @return
     */
    String key() default "";

    /**
     * 过期时间
     * @return
     */
    long expire() default -1;

    /**
     * 设置缓存再次访问的时候刷不刷新缓存时间，时间从当前开始计算，满足个性化的需求处理
     * @return
     */
    boolean reset() default false;

    /**
     * 缓存穿透的时候的处理方案
     * @return
     */

    boolean empty() default false;

    long expireEmpty() default -1;

    /**
     * 没有值得时候的反序列化值
     * @return
     */
    String defaultValue() default StringPool.NULL;

}
